<?php
namespace Common\Util;
//文件类
class Filedir
{
    function check_exist($filename)		//检查目录或文件是否存在
    {
        if(file_exists($filename))
        {
            return true;
        }
        else	return false;
    }

    function create_dir($dirname,$mode=0777)	// 一次只能创建一级目录
    {
        if(is_null($dirname) || $dirname=="")	return false;
        if(!is_dir($dirname))
        {
            return mkdir($dirname,$mode);
        }
    }

    function createDir($aimUrl)		//可同时创建多级目录
    {
        $aimUrl = str_replace('\\', '/', $aimUrl);
        $aimDir = '';
        $arr = explode('/', $aimUrl);
        foreach ($arr as $str)
        {
            $aimDir .= $str . '/';
            if (!file_exists($aimDir))
            {
                mkdir($aimDir);
            }
        }
    }

    function delete_dir($dirname)		//删除目录和目录下所有文件
    {
        if($this->check_exist($dirname) and is_dir($dirname))
        {
            if(!$dirhandle=opendir($dirname)) return false;
            while(($file=readdir($dirhandle))!==false)
            {
                if($file=="." or $file=="..")	continue;
                $file=$dirname.DIRECTORY_SEPARATOR.$file;  //表示$file是$dir的子目录
                if(is_dir($file))
                {
                    $this->delete_dir($file);
                }
                else
                {
                    unlink($file);
                }
            }
            closedir($dirhandle);
            return rmdir($dirname);
        }
        else	return false;
    }

    function delete_dir_file($dirname)		//删除目录下所有文件 保留目录
    {
        if($this->check_exist($dirname) and is_dir($dirname))
        {
            if(!$dirhandle=opendir($dirname)) return false;
            while(($file=readdir($dirhandle))!==false)
            {
                if($file=="." or $file=="..")	continue;
                $file=$dirname.DIRECTORY_SEPARATOR.$file;  //表示$file是$dir的子目录
                if(is_dir($file))
                {
                    $this->delete_dir($file);
                }
                else
                {
                    unlink($file);
                }
            }
            closedir($dirhandle);
            return true;
        }
        else	return false;
    }

    function copy_dir($dirfrom,$dirto)		//复制目录
    {
        if(!is_dir($dirfrom))	return false;
        if(!is_dir($dirto))		mkdir($dirto);
        $dirhandle=opendir($dirfrom);
        if($dirhandle)
        {
            while(false!==($file=readdir($dirhandle)))
            {
                if($file=="." or $file=="..")	continue;
                $filefrom=$dirfrom.DIRECTORY_SEPARATOR.$file;  //表示$file是$dir的子目录
                $fileto=$dirto.DIRECTORY_SEPARATOR.$file;
                if(is_dir($filefrom))
                {
                    $this->copy_dir($filefrom,$fileto);
                }
                else
                {	if(!file_exists($fileto))
                    copy($filefrom,$fileto);
                }
            }
        }
        closedir($dirhandle);
    }

    function getdir_size($dirname)		//获取目录大小
    {
        if(!file_exists($dirname) or !is_dir($dirname))	 return false;
        if(!$handle=opendir($dirname)) 	return false;
        $size=0;
        while(false!==($file=readdir($handle)))
        {
            if($file=="." or $file=="..")	continue;
            $file=$dirname."/".$file;
            if(is_dir($file))
            {
                $size+=$this->getdir_size($file);
            }
            else
            {
                $size+=filesize($file);
            }

        }
        closedir($handle);
        return $size;
    }

    function getReal_size($size)	   // 单位自动转换函数
    {
        $kb=1024;
        $mb=$kb*1024;
        $gb=$mb*1024;
        $tb=$gb*1024;
        if($size<$kb)	return $size."B";
        if($size>=$kb and $size<$mb)	return round($size/$kb,2)."KB";
        if($size>=$mb and $size<$gb)	return round($size/$mb,2)."MB";
        if($size>=$gb and $size<$tb)	return round($size/$gb,2)."GB";
        if($size>=$tb)	return round($size/$tb,2)."TB";
    }

    function copy_file($srcfile,$dstfile)
    {
        if(is_file($srcfile))
        {
            if(!file_exists($dstfile))
                return copy($srcfile,$dstfile);
        }
        else	return false;
    }

    function unlink_file($filename)		//删除文件
    {
        if($this->check_exist($filename) and is_file($filename))
        {
            return unlink($filename);
        }
        else	return false;
    }

    function getsuffix($filename)			//获取文件名后缀
    {
        if(file_exists($filename) and is_file($filename))
        {
            return end(explode(".",$filename));
        }
    }

    function input_content($filename,$str)		//将字符串写入文件
    {
        if(function_exists(file_put_contents))
        {
            file_put_contents($filename,$str);
        }
        else
        {
            $fp=fopen($filename,"wb");
            fwrite($fp,$str);
            fclose($fp);
        }
    }

    function output_content($filename)			//将整个文件内容读出到一个字符串中
    {
        if(function_exists(file_get_contents))
        {
            return file_get_contents($filename);
        }
        else
        {
            $fp=fopen($filename,"rb");
            $str=fread($fp,filesize($filename));
            fclose($fp);
            return $str;
        }
    }

    function output_to_array($filename)		//将文件内容读出到一个数组中
    {
        $file=file($filename);
        $arr=array();
        foreach($file as $value)
        {
            $arr[]=trim($value);
        }
        return $arr;
    }


}
?>